<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户管理</title>
<%@include file="/jsp/include/common.jsp"%>
</head>
<body class="easyui-layout">
	<%@include file="/jsp/include/commonLayout.jsp"%>
	<div data-options="region:'center'">
		<div>
			<!-- 数据表格  -->
			<table id="dataGrid"></table>
			<!-- 添加或编辑用户的弹出窗口 begin -->
			<div id="saveOrEditDlg" class="easyui-dialog"
				style="width: 400px; height: 280px; padding: 10px 10px"
				closed="true" buttons="#dlg-buttons" data-options="modal:true">
				<form id="saveOrEditForm" method="post">
					<table>
						<tr>
							<td>用户名:</td>
							<td><input id="userid" name="userid" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>密码:</td>
							<td><input id="password" name="password" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>电子邮件:</td>
							<td><input id="email" name="email" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>电话:</td>
							<td><input name="phone" class="easyui-textbox"></td>
						</tr>
						<tr>
							<td>说明:</td>
							<td><input name="odesc" class="easyui-textbox"></td>
						</tr>
					</table>
					<input type="hidden" name="oid">
				</form>
			</div>
			<div id="dlg-buttons">
				<a class="easyui-linkbutton" iconCls="icon-ok"
					onclick="saveOrEditUser()">保存</a> <a class="easyui-linkbutton"
					iconCls="icon-cancel"
					onclick="javascript:$('#saveOrEditDlg').dialog('close')">取消</a>
			</div>
			<!-- 添加或编辑用户的弹出窗口 end -->
		</div>
		
		<!-- 用户角色管理 -->
		<div id="roleManageWindow" class="easyui-window" data-options="title:'管理角色',closed:true,modal:true,width:700,height:500">
			<div style="height: 50%">
				<table id="userRoleTable"></table>
			</div>
			<div style="height: 50%">
				<table id="userNotHaveRoleTable"></table>
			</div>
		</div>
		
		<!-- 用户命令管理 -->
		<div id="actionManageWindow" class="easyui-window" data-options="title:'管理命令',closed:true,modal:true,width:700,height:500">
			<table id="resourceTable"></table>
		</div>
	</div>
</body>
<script type="text/javascript">
	$(document).ready(function() {
		// 添加验证(远程验证)
		$("#userid").textbox({
			required : true,	//定义为必填字段
			validType : 'remote["'+getRootPath()+'/UserinfoController/findUserById.do","userid"]',	//定义字段验证类型
			invalidMessage : '用户名已存在',	//当文本框的内容被验证为无效时出现的提示
			delay : 1000	//延迟到最后验证输入值
		});
		$("#email").textbox({
			required : true,
			validType : "email"
		});
		
		$("#password").textbox({
			required : true
		});

		// 初始化表格
		var dataGrid = $('#dataGrid').datagrid({
			rownumbers : true,	//如果为true，则显示一个行号列
			fitColumns : true,	//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动
			collapsible : true,	//定义是否显示可折叠按钮
			title : '用户信息管理',	//在面板头部显示的标题文本
			pagination : true,	//如果为true，则在DataGrid控件底部显示分页工具栏
			pagePosition : 'bottom',	//定义分页工具栏的位置
			method : 'post', //该方法类型请求远程数据
			url : getRootPath() + '/UserinfoController/getAllUsers.do',	//一个URL从远程站点请求数据
			singleSelect : false,//只能选一行
			striped : true, //数据条纹显示
			frozenColumns : [ [ {//不可被删除的列
				field : 'ck',	//列字段名称
				checkbox : true	//如果为true，则显示复选框
			} ] ],
			columns : [ [ {
				field : 'userid',
				title : '用户名',
				width : 200,
				sortable : true	//如果为true，则允许列使用排序
			}, {
				field : 'email',
				title : '电子邮件',
				width : 200
			}, {
				field : 'phone',
				title : '电话',
				width : 200
			}, {
				field : 'odesc',
				title : '说明',
				width : 200
			}, {
				field : 'oid',
				title : 'id',
				hidden : true
			} ] ],
			sortName : 'userid',	//定义哪些列可以进行排序
			toolbar : [{	//顶部工具栏的DataGrid面板
				text : '添加',
				iconCls : 'icon-add',
				handler : function(){
					$('#saveOrEditDlg').dialog('open').dialog('setTitle', '新建用户');
					$('#saveOrEditForm').form('clear');
				}
			},{
				text : '编辑',
				iconCls : 'icon-edit',
				handler : function(){
					$("#userid").textbox('disableValidation');
					var rows = $('#dataGrid').datagrid('getSelections');
					if (rows.length == 0) {
						$.messager.alert('提示', '请选择修改项', 'info');
						return;
					} else if (rows.length > 1) {
						$.messager.alert('提示', '只能选择一项', 'info');
						return;
					}
					if (rows) {
						$('#saveOrEditDlg').dialog('open').dialog('setTitle', '编辑用户');
						$.ajax({
							type : 'post',
							async : false,
							url : getRootPath() + '/UserinfoController/findUserifo.do',
							data : rows[0],
							success : function(result) {
								$('#saveOrEditForm').form('load', result);
							},
							dataType : 'json'
						});
					}
				}
			},{
				text : '删除',
				iconCls : 'icon-remove',
				handler : function(){
					var rows = $('#dataGrid').datagrid('getSelections');
					if (rows.length == 0) {
						$.messager.alert('提示', '请选择删除项', 'info');
						return;
					}

					var oids = [];
					for (var i = 0; i < rows.length; i++) {
						oids.push(rows[i].oid);
					}

					oids = oids.join('-');

					$.messager.confirm('确认', '确定要删除选中的信息吗?', function(r) {
						if (r) {
							$.post(getRootPath() + '/UserinfoController/removeUser.do', {
								'oids' : oids
							}, function(result) {
								//result = $.parseJSON(result);
								if (result.successful) {
									$('#dataGrid').datagrid('reload'); // reload the user data
								} 
								$.messager.show(result);
							}, 'json');
						}
					});
				}
			},'-',{
				text : '管理角色',
				handler : function() {
					var rows = $('#dataGrid').datagrid('getSelections');
					if (rows.length == 0) {
						$.messager.alert('提示','请选择操作项','info');
						return;
					} else if (rows.length > 1) {
						$.messager.alert('提示','只能选择一项','info');
						return;
					}
					id = rows[0].oid;
					//console.info(id);
					
					// 用户包含角色列表 -begin //
					$('#userRoleTable').datagrid({
						fit:true,
						fitColumns : true,
						title : '用户包含角色列表',
						nowrap : false,
						striped : true, //数据条纹显示
						collapsible : true,
						singleSelect : false,
						queryParams : {'userid':id},
						url : '<%=request.getContextPath()%>/RoleController/getUserHaveRoleList.do',
						sortName : 'oid',
						remoteSort : true,
						idField : 'oid',//唯一标识列
						frozenColumns : [ [ {//不可被删除的列
							field : 'ck',
							checkbox : true
						}, {
							title : '标识',
							field : 'oid',
							width : 80,
							sortable : true
						} ] ],
						columns : [ [ {
							field : 'oname',
							title : '名称',
							width : 120,
							sortable : true
						}, {
							field : 'odesc',
							title : '描述',
							width : 240,
							sortable : true
						} ] ],
						pagination : true,
						rownumbers : true,
						toolbar : [{
							id : 'btndelete',
							text : '删除',
							iconCls : 'icon-remove',
							handler : function() {
								var rows = $('#userRoleTable').datagrid('getSelections');
								if (rows.length == 0) {
									$.messager.alert('提示','请选择删除项','info');
									return;
								} 
								
								var oids = [];
								for(var i=0;i<rows.length;i++){
									oids.push(rows[i].oid);
								}
								oids = oids.join('-');
								
								$.messager.confirm('确认', '确定要删除选中的信息吗?', function(r) {
									if (r) {
										$.post(getRootPath() + '/RoleController/removeUserHaveRole.do', {
											'userid':id,
											'roleids' : oids
										}, function(result) {
											//result = $.parseJSON(result);
											if (result.successful) {
												$('#userRoleTable').datagrid('reload'); // reload the user data
												$('#userNotHaveRoleTable').datagrid('reload'); // reload the user data
											} 
											$.messager.show(result);
										}, 'json');
									}
								});
							}
						}]
					});
					// 用户包含角色列表 -end //
					
					// 用户可添加角色列表 - begin //
					$('#userNotHaveRoleTable').datagrid({
						fit:true,
						fitColumns : true,
						title : '用户可添加角色列表',
						nowrap : false,
						striped : true, //数据条纹显示
						collapsible : true,
						singleSelect : false,//只能选一行
						queryParams : {'userid':id},
						url : '<%=request.getContextPath()%>/RoleController/getUserNotHaveRoleList.do',
						sortName : 'oid',
						remoteSort : true,
						idField : 'oid',//唯一标识列
						frozenColumns : [ [ {//不可被删除的列
							field : 'ck',
							checkbox : true
						}, {
							title : '标识',
							field : 'oid',
							width : 80,
							sortable : true
						} ] ],
						columns : [ [ {
							field : 'oname',
							title : '名称',
							width : 120,
							sortable : true
						}, {
							field : 'odesc',
							title : '描述',
							width : 240,
							sortable : true
						} ] ],
						pagination : true,
						rownumbers : true,
						toolbar : [ {
							id : 'btnadd',
							text : '添加',
							iconCls : 'icon-add',
							handler : function() {
								var rows = $('#userNotHaveRoleTable').datagrid('getSelections');
								if (rows.length == 0) {
									$.messager.alert('提示','请选择添加项','info');
									return;
								} 
								
								var oids = [];
								for(var i=0;i<rows.length;i++){
									oids.push(rows[i].oid);
								}
								
								oids = oids.join('-');
								
								$.messager.confirm('确认添加项', '确认添加该选项', function(r) {
									if (r) {
										$.post(getRootPath() + '/RoleController/addUserNotHaveRole.do', {
											'userid':id,
											'roleids' : oids
										}, function(result) {
											//result = $.parseJSON(result);
											if (result.successful) {
												$('#userRoleTable').datagrid('reload'); // reload the user data
												$('#userNotHaveRoleTable').datagrid('reload'); // reload the user data
											} 
											$.messager.show(result);
										}, 'json');
									}
								});
							}
						}]
					});
					// 用户可添加角色列表 - end //
					
					$('#roleManageWindow').window('open');
				}
			}
			/* 
			<%-- ,'-',{
				text : '管理命令',
				handler : function(){
					var rows = $('#dataGrid').datagrid('getSelections');
					if (rows.length == 0) {
						$.messager.alert('提示','请选择操作项','info');
						return;
					} else if (rows.length > 1) {
						$.messager.alert('提示','只能选择一项','info');
						return;
					}
					id = rows[0].oid;
					
					$('#resourceTable').treegrid({
						fit : true,
						fitColumns : true,
						title : '命令列表',
						nowrap : false,
						striped : true, //数据条纹显示
						collapsible : true,
						singleSelect : false,//只能选一行
						queryParams : {'userid':id},
						url : '<%=request.getContextPath()%>/ActionController/getActionsByUserId.do',
						idField : 'id',//唯一标识列
						treeField:'oname',
						frozenColumns : [ [ {//不可被删除的列
							field : 'ck',
							checkbox : true
						} ] ],
						columns : [ [ {
							field : 'oname',
							title : '名称',
							width : 240
						}, {
							field : 'url',
							title : '路径',
							width : 200
						} ] ],
						rownumbers : true,
						animate:true,
						toolbar : [ {
							text : '保存',
							iconCls : 'icon-save',
							handler : function() {
							
							var nodes = $('#resourceTable').treegrid('getSelections');
							var checkedIds = '';
							for(var i=0; i<nodes.length; i++){
								checkedIds += nodes[i].id +',';
							}
							
							$.post(getRootPath() + '/ActionController/updateUserActions.do', {
								'userid':id,
								'checkedIds' : checkedIds
							}, function(result) {
								if (result.successful) {
									$('#actionManageWindow').window('close');
									$('#resourceTable').datagrid('reload'); // reload the user data
								} 
								$.messager.show(result);
							}, 'json');
							}
						}],
						onLoadSuccess: function(){
							var nodes = $('#resourceTable').treegrid('getChildren');
							for(var i=0; i < nodes.length; i++) {
								if (nodes[i].checked != null) {
									if (nodes[i].checked) {
										$('#resourceTable').treegrid('select', nodes[i].id);
									}
								}
							}
						}
					});
					
					$('#actionManageWindow').window('open');
				}
			} --%> */
			],
		remoteFilter : true,	//设置为true时，启用远程过滤
		filterDelay : 1000,		//延迟过滤 'text' 过滤器组件中最后一次键盘输入事件
		filterStringify : function(data) {	//字符串化过滤器规则的函数
			return JSON.stringify(data);
		} 
		});

		dataGrid.datagrid('enableFilter');
	});

	// 保存用户
	function saveOrEditUser() {
		$('#saveOrEditForm').form('submit', {
			url : getRootPath() + '/UserinfoController/saveOrEditUser.do',
			onSubmit : function() {
				return $(this).form('validate');
			},
			success : function(result) {
				result = $.parseJSON(result);
				if (result.successful) {
					$('#dataGrid').datagrid('reload'); // reload the user data
				} 
				$('#saveOrEditDlg').dialog('close'); // close the dialog
				$.messager.show(result);
			}
		});
	}
</script>
</html>
